Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

php 5.3 и Zend Guard Loader (sprofxx)
Author Message
sprofxx
Заглянувший



Joined: 28 Mar 2012
Posts: 2
Карма: -2
   поощрить/наказать


PostPosted: Wed May 09, 2012 9:27 pm (написано за 38 секунд)
   Post subject: php 5.3 и Zend Guard Loader
Reply with quote

Возможно ли на денвере? Извращался очень долго, так и не заработало ниче. У кого-нибудь получилось?
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Jun 12, 2012 3:05 am (спустя 1 месяц 2 дня 5 часов 38 минут; написано за 39 секунд)
   Post subject:
Reply with quote

sprofxx
у меня и 5.4 работал. Работал даже php6 (-;
Back to top
View user's profile Send private message
sprofxx
Заглянувший



Joined: 28 Mar 2012
Posts: 2
Карма: -2
   поощрить/наказать


PostPosted: Wed Jun 13, 2012 7:36 pm (спустя 1 день 16 часов 30 минут; написано за 53 секунды)
   Post subject:
Reply with quote

Может кто-нибудь по шагам расскажет как подключить его правильно для сабжа? Форум пестрит этим вопросом где от представителей денвера нет ни одного явного ответа, кроме хвальбы о том, что у них самих это легко получается. Пожалуйста.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jun 14, 2012 9:25 am (спустя 13 часов 48 минут; написано за 2 минуты 36 секунд)
   Post subject:
Reply with quote

Под Windows, насколько я знаю, Zend Guard Loader + mod_php 5.3 + apache не бывает.
forums.zend.com/viewtopic.php?f=57&t=42673

Потому что Zend Guard Loader есть только для non-thread-safe (nts) сборки PHP, а non-thread-safe сборка PHP, в свою очередь, не может работать с apache (с apache mod_php 5.3 есть только в thread-safe (ts) сборке).

Можете попробовать обходной путь, в котором через zend_enabler_module делается, -
phpclub.ru/talk/threads/php-5-3-zend-debugger-%D0%B8-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D0%B5-zend-%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D1%8B.70184/
но я его не проверял, плюс он кажется довольно сложным, плюс там ничего про Zend Guard Loader не сказано (сказано только про Zend Debugger, который никому не нужен по большому счету).
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Jun 14, 2012 12:47 pm (спустя 3 часа 22 минуты; написано за 17 минут 45 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Zend Guard Loader + mod_php 5.3 + apache не бывает
Зато бывает Zend Guard Loader + PHP NTS 5.3 + apache2 + mod_fcgid .

Тупо читая инструкции, всё получилось. Единственная сложность возникла вот по какой причине: у меня на работе WinXP 64bit, соответственно и VC10 встал 64bit. А в Денвере Апач 32-битный.
Итак, следите за руками:
1) Качаем c www.zend.com/en/products/guard/downloads Zend Guard Loader (Runtime for PHP 5.3)
2) Читаем инструкцию:
Quote:
Windows non-thread safe: zend_extension=<full_path_to_ZendLoader.dll>
3) Качаем с windows.php.net/download/#php-5.3 версию "VC9 x86 Non Thread Safe, Zip"
4) Распаковываем в /usr/local/php5_nts.
5) Копируем /usr/local/php5/php.ini в /usr/local/php5_nts (я брал с базового пакета, расширений минимум, еакселератор отключил)
6) вписываем туда строки:
Code (Windows INI file): скопировать код в буфер обмена
7) плюс исправляем путь к расширениям:
Code (Windows INI file): скопировать код в буфер обмена
extension_dir = "/usr/local/php5_nts/ext"
Как CGI оно уже может работать (я проверял), но так тяжко. Возьмём FastCGI:
8) качаем с www.apachelounge.com/ нужный mod_fcgid-2.3.7-win32.zip или mod_fcgid-2.3.7-win64.zip . Если 64 - то надо и Апач выкачивать нужной архитектуры. Там же в шапке страницы загрузки ссылка на Visual C++ 2010 SP1 Redistributable Package (тоже отдельно 32 или 64 бита)
9) Распаковываем. Я старую папку Апача просто переменовал, новую распаковал, чтобы получились все старые пути, плюс из старой папки вытащил папку conf и файлы bin/Apache.ico , bin/TrayApache.exe . Модуль в modules , очевидно.
10) находим в conf/httpd.conf строчку:
Code (Apache config): скопировать код в буфер обмена
LoadModule php5_module "/usr/local/php5/php5apache2_2.dll"
комментируем и вписываем своё. У меня получилось:
Code (Apache config): скопировать код в буфер обмена
#LoadModule php5_module "/usr/local/php5/php5apache2_2.dll"

# PHP as FCGI
LoadModule fcgid_module modules/mod_fcgid.so
11) запускаем Денвер и смотрим на перо. Если ругани на mod_fcgid.so нет, то он загрузился, отлично.
12) правим конфиг дальше. Я прямо ниже воткнул строчки, образец был в архиве с модулем:
Code (Apache config): скопировать код в буфер обмена
<IfModule fcgid_module>
FcgidInitialEnv PHPRC "/usr/local/php5_nts"
FcgidInitialEnv PATH "/usr/local/php5_nts;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "/tmp"
FcgidInitialEnv TMP "/tmp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 500

<Files ~ "\.php$>"
  AddHandler fcgid-script .php
  FcgidWrapper "/usr/local/php5_nts/php-cgi.exe" .php
</Files>
<Files ~ "\.php5$>"
  AddHandler fcgid-script .php5
  FcgidWrapper "/usr/local/php5_nts/php-cgi.exe" .php5
</Files>
</IfModule>
13) плюс ниже нашёл и закомментировал:
Code (Apache config): скопировать код в буфер обмена
#AddType application/x-httpd-php .php .php5 .phtml
 
14) также нашёл и вписал ExecCGI в Options, получилось:
Code (Apache config): скопировать код в буфер обмена
<Directory />
    Options Includes Indexes FollowSymLinks ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
    Satisfy all
</Directory>
Оно может и несекурно, но это ж сервер разработки, тут пофиг.
15) Перезапуск Денвера и Ура, заработало! (localhost/denwer/).
localhost/Tests/PHP5/index.php5 wrote:
PHP Version 5.3.14

System Windows NT MAUS- 5.2 build 3790 (Windows XP Professional x64 Edition Service Pack 2) i586
Build Date Jun 13 2012 18:19:14
Compiler MSVC9 (Visual C++ 2008)
Architecture x86
Server API CGI/FastCGI
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies

Zend Guard Loader
Zend Guard Loader enabled
License Path no value
Obfuscation level 3
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Jun 14, 2012 12:55 pm (спустя 7 минут; написано за 3 минуты 27 секунд)
   Post subject:
Reply with quote

Единственный момент, на котором я застревал - это когда я подкинул в папку модулей mod_fcgid.so , а Апач твердил, что модуль не загружен. Это из-за архитектуры: 64 бита в модуле против 32 у Апача. Тогда я поправился и скачал 32-битный модуль, и получил ругань на точку входа. Это уже где-то встречалось, опять из-за битности, но уже VC10 рантайма. Оставалось только взять 64-битный Апач и всё завелось.

Пересказ приблизительный (-;
Back to top
View user's profile Send private message
phil15
Заглянувший
Warnings: 1


Joined: 06 Sep 2007
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Sat Oct 20, 2012 10:27 am (спустя 4 месяца 5 дней 21 час 32 минуты; написано за 13 минут 50 секунд)
   Post subject:
Reply with quote

Maus
Спасибо за подробный мануал, очень помогло!

От себя могу только добавить, будьте внимательны при скачивании mod_fcgid-2.3.7-win32.zip или mod_fcgid-2.3.7-win64.zip, обращайте внимание на версию Apache!

В общем и целом все работает стабильно, из замеченных неприятных "особенностей":

1) При некоторых запусках Denwer'a Apache (httpd) жалуется на отсутствие php5ts.dll (решил путем копирования из /usr/local/php5/)
2) Restart Denwer'a, в 6 из 10 случаев не может завершить (отключить) Apache в течении 10 секунд. Но отключает его после сообщения "Не удается дождаться завершения!". Что происходит по причине наличии под процесса(ов) php-cgi.exe в дереве процессов httpd. Приходится делать рестарт повторно. Решил путем увеличения таймаута до 30 секунд в \denwer\scripts\init.d\apache.pl
Code (perl): скопировать код в буфер обмена
my $timeout = 30;
Тем кто с толкнулся с задачей реализации конфигурирования php.ini для хостов (т.к. php_value в .htaccess приводит к 500 Internal Server Error), решением будет php.net/manual/ru/configuration.file.per-user.php
Back to top
View user's profile Send private message
trimba
Заглянувший



Joined: 07 Oct 2014
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Oct 07, 2014 2:51 pm (спустя 1 год 11 месяцев 18 дней 4 часа 23 минуты; написано за 9 секунд)
   Post subject:
Reply with quote

Maus
Спасибо за подробную инструкцию! Все классно заработало!!!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You cannot download files in this forum.
XML